Under the Transmission Control Protocol/Internet Protocol (TCP/IP), when a client provides a symbolic name (a Uniform Resource Locator or URL) to request access to an application program or another type of resource, the host name portion of the URL needs to be resolved into an IP address of a server for that application program or resource. For example, the URL (e.g., http://www.foundrynet.com/index.htm) includes a host name portion www.foundrynet.com that needs to be resolved into an IP address. The client first provides the host name portion to a local name resolver, which then queries a local Domain Name System (DNS) server to obtain a corresponding IP address. If a corresponding IP address is not locally cached at the time of the query, or if the time-to-live (TTL) of a corresponding IP address cached locally has expired, the DNS server then acts as a resolver and dispatches a recursive query to another DNS server. This process is repeated until an authoritative DNS server for the domain (e.g., foundrynet.com, in this example) is reached. The authoritative DNS server returns one or more IP addresses, each corresponding to an address at which a server hosting the application (“host server”) under the host name can be reached. These IP addresses are propagated back via the local DNS server to the original resolver. The application at the client then uses one of the IP addresses to establish a TCP connection with the corresponding host server. Each DNS server caches the list of IP addresses received from the authoritative DNS server for responding to future queries regarding the same host name, until the TTL of the IP addresses expires.
To provide some load sharing among the host servers, global server load balancing (GSLB) switches are sometimes used as proxies for authoritative DNS servers, together with one or more site switches each associated with one or more host servers. Each site switch provides the GSLB switch with current site-specific information (“metrics”) regarding access conditions to the host servers associated with the site switches. The GSLB switch then processes the addresses returned by the DNS server using the metrics compiled from the site switches and provides an ordered address list having the optimum address for access listed at the top. An example of a GSLB system and description of associated metrics are disclosed in U.S. application Ser. No. 10/376,903, entitled “GLOBAL SERVER LOAD BALANCING,” filed Feb. 28, 2003, assigned to the same assignee as the present application, and which is incorporated herein by reference in its entirety.
A criterion that is sometimes used for load balancing purposes is geographic location. That is, where there are multiple geographically located servers, load balancing systems attempt to direct client requests to a server that is geographically the closest to the client. The geographic location of the client and the servers is determined using a static table containing Internet Assigned Numbers Authority (IANA)-allocated IP address prefixes and the associated geographic locations. However, such load balancing systems that are based on static mappings between the IP address prefixes and the geographic locations have drawbacks that lead to less-than optimum performance.
For instance, load balancing systems generally maintain only a static table of some IANA-allocated IP address prefixes and the associated geographic designation. This table may be in the form of a database having IP address prefixes (e.g., IP address/prefix length) and the corresponding geographic locations (e.g., the country and region designation) for the respective IP address prefixes. There are several shortcomings to just having such a static geographic database.
First, a load balancing system maintains only some, and generally not all, of the IANA-allocated entries in its statically generated database. This is because IP address allocation by the IANA is an ongoing process, and so the load balancing software will have to be updated each time a new IP address and/or address prefix is allocated, in order to keep up with the latest IANA allocations. Since constant updating of the load balancing software and static geographic database is not practical, the load balancing system would be missing many IP address prefixes and associated geographic location information in its geographic database, and hence would not be able to determine the geographic location of many clients correctly.
Additionally, users (such as system administrators) generally cannot override the geographic region for a prefix. For instance, a prefix 149.204.0.0/16 may be specified as being in the geographic region EUROPE in a load balancing switch's internal static geographic prefix database. If the user has a client with an address of 149.204.11.1, which actually resides in ASIA, there is currently no suitable technique in which the user can override the geographic region for the prefix specified in the database. This means that the load balancing switch will always treat the client at 149.204.11.1 as being in the geographic region EUROPE, even though the user wants the prefix to be associated with ASIA.